i.MX28: Fix VDDIO and VDDA setup
authorMarek Vasut <[email protected]>
Mon, 30 Jan 2012 14:00:01 +0000 (14:00 +0000)
committerAlbert ARIBAUD <[email protected]>
Mon, 27 Feb 2012 20:19:23 +0000 (21:19 +0100)
The DC power STS shouldn't be checked if booting off 5V supply.

Signed-off-by: Marek Vasut <[email protected]>
Cc: Wolfgang Denk <[email protected]>
Cc: Detlev Zundel <[email protected]>
Cc: Stefano Babic <[email protected]>
Cc: Robert DeliĆ«n <[email protected]>
Cc: Fabio Estevam <[email protected]>
Cc: Matthias Fuchs <[email protected]>
arch/arm/cpu/arm926ejs/mx28/spl_power_init.c

index 380b120dc9c6d1e623f1cf9fa310ad4bfd951448..271da8dd7671d7ef79e767a862dce261fdba7622 100644 (file)
@@ -726,7 +726,9 @@ void mx28_power_set_vddio(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vddioctrl,
                                POWER_VDDIOCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &
@@ -761,7 +763,9 @@ void mx28_power_set_vddio(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vddioctrl,
                                POWER_VDDIOCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &
@@ -819,7 +823,9 @@ void mx28_power_set_vddd(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vdddctrl,
                                POWER_VDDDCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &
@@ -854,7 +860,9 @@ void mx28_power_set_vddd(uint32_t new_target, uint32_t new_brownout)
                        clrsetbits_le32(&power_regs->hw_power_vdddctrl,
                                        POWER_VDDDCTRL_TRG_MASK, diff);
 
-                       if (powered_by_linreg)
+                       if (powered_by_linreg ||
+                               (readl(&power_regs->hw_power_sts) &
+                                       POWER_STS_VDD5V_GT_VDDIO))
                                early_delay(1500);
                        else {
                                while (!(readl(&power_regs->hw_power_sts) &